package entity

import (
	"fmt"
	"time"

	"shqsoft.cn/pasnj/base"

	"github.com/jinzhu/gorm"
)

// CorporateZs
type CorporateZs struct {
	ID         int        `gorm:"AUTO_INCREMENT;primary_key;column:ID"`
	DRRQ       string     `gorm:"column:DRRQ"`
	JYRQ       *time.Time `gorm:"column:JYRQ"`
	CUID       int        `gorm:"column:CUID"`
	KHMC       string     `gorm:"column:KHMC"`
	ZSJE       float64    `gorm:"column:ZSJE"`
	ZSKMH      string     `gorm:"column:ZSKMH"`
	ITID       int        `gorm:"column:ITID"`
	EMID1      int        `gorm:"column:EMID1"`
	EMNO1      string     `gorm:"column:EMNO1"`
	EMNM1      string     `gorm:"column:EMNM1"`
	DSVL1      float64    `gorm:"column:DSVL1"`
	OrganID1   int        `gorm:"column:OrganID1"`
	OrganName1 string     `gorm:"column:OrganName1"`
	EMID2      int        `gorm:"column:EMID2"`
	EMNO2      string     `gorm:"column:EMNO2"`
	EMNM2      string     `gorm:"column:EMNM2"`
	DSVL2      float64    `gorm:"column:DSVL2"`
	OrganID2   int        `gorm:"column:OrganID2"`
	OrganName2 string     `gorm:"column:OrganName2"`
	EMID3      int        `gorm:"column:EMID3"`
	EMNO3      string     `gorm:"column:EMNO3"`
	EMNM3      string     `gorm:"column:EMNM3"`
	DSVL3      float64    `gorm:"column:DSVL3"`
	OrganID3   int        `gorm:"column:OrganID3"`
	OrganName3 string     `gorm:"column:OrganName3"`
	EMID4      int        `gorm:"column:EMID4"`
	EMNO4      string     `gorm:"column:EMNO4"`
	EMNM4      string     `gorm:"column:EMNM4"`
	DSVL4      float64    `gorm:"column:DSVL4"`
	OrganID4   int        `gorm:"column:OrganID4"`
	OrganName4 string     `gorm:"column:OrganName4"`
	EMID5      int        `gorm:"column:EMID5"`
	EMNO5      string     `gorm:"column:EMNO5"`
	EMNM5      string     `gorm:"column:EMNM5"`
	DSVL5      float64    `gorm:"column:DSVL5"`
	OrganID5   int        `gorm:"column:OrganID5"`
	OrganName5 string     `gorm:"column:OrganName5"`
}

//TableName
func (CorporateZs) TableName() string {
	return "T_DG_ZS"
}

// LrycAfterImport 导入后执行分户处理
func CorporateZsAfterImport(tx *gorm.DB, params map[string]string) (err error) {
	prams := make([]interface{}, 1)
	prams[0] = params["DRRQ"]
	tx.Exec("EXEC UP_CorporateZs_ZSXX ?", prams...)
	return nil
}

//BeforeSave 保存前的触发器
func (i *CorporateZs) BeforeSave(tx *gorm.DB) (err error) {
	sqlstr := "SELECT ID FROM T_COMP_CLIE WHERE CUNM=?"
	row := tx.Raw(sqlstr, i.KHMC).Row()
	var utid int
	row.Scan(&utid)
	if utid == 0 {
		return fmt.Errorf("客户名称%s在系统中不存在", i.KHMC)
	}
	i.CUID = utid

	sqlstr = "SELECT ITID FROM T_CONF_MIDO_TYPE  WHERE ITNO=?"
	row = tx.Raw(sqlstr, i.ZSKMH).Row()
	var itid int
	row.Scan(&itid)
	if itid == 0 {
		return fmt.Errorf("科目号%s在系统中不存在", i.ZSKMH)
	}
	i.ITID = itid
	return
}

func CorporateZsEF() base.EntityFunc {
	return func() interface{} {
		entity := CorporateZs{}
		return &entity
	}
}
func CorporateZsESF() base.EntitiesFunc {
	return func() interface{} {
		var entities []CorporateZs
		return &entities
	}
}

func init() {
	base.DaoPoolObj.Put("CorporateZs", base.NewDefaultDao(CorporateZsEF(), CorporateZsESF(), nil))
	base.SetAfterCallBack("CorporateZs", CorporateZsAfterImport)
}
